/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionform;

import static gestionform.GestionConnexion.ERREUR_CONNEXION;
import static gestionform.GestionInfos.CHAMP_LOGIN;
import static gestionform.GestionInfos.CHAMP_PASS;
import static gestionform.GestionInfos.getValeurChamp;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.ejb.EJBException;
import javax.servlet.http.HttpServletRequest;
import model.Administrateur;
import model.Candidat;
import model.Utilisateur;
import org.restlet.ext.xml.DomRepresentation;
import org.restlet.representation.Representation;
import org.restlet.resource.ClientResource;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

/**
 *
 * @author Paul
 */
public class GestionCandidat extends GestionInfos {

    //private final String BASE_URL = "http://212.198.164.253:1234/XmlProjet/candidats";
    private final String BASE_URL = "http://localhost:8080/XmlProjet/candidats";
    
    private Administrateur administrateur;

    public GestionCandidat() {
    }

    public GestionCandidat(Administrateur a) {
        this.administrateur = a;
    }

    public Candidat connexionEtudiant(Utilisateur u) throws IOException {
        /* Récupération des champs du formulaire */
        Candidat c = getCandidat(u.getIdUtilisateur());
        if (c == null) {
            setErreur("", "Échec de la connexion : vous n'êtes pas inscris en tant que candidat");
        }
        return c;
    }

    private Candidat getCandidat(int idUtilisateur) throws IOException {
        ClientResource resource = new ClientResource(BASE_URL);
        Representation reponse = resource.get();
        DomRepresentation newDom = new DomRepresentation(reponse);
        Document newDoc = newDom.getDocument();
        Candidat c = null;
        //On crée une List contenant tous les noeuds "utilisateurs" de l'Element racine
        NodeList listeUtilisateurs = newDoc.getChildNodes();
        //On crée un Iterator sur notre liste
        for (int i = 0; i < listeUtilisateurs.getLength(); i++) {
            NodeList utilisateur = newDoc.getElementsByTagName("candidat");
            for (int j = 0; j < utilisateur.getLength(); j++) {
                Element elt = (Element) utilisateur.item(j);
                String id = elt.getAttribute("idUtilisateur");
                String idCandidat = elt.getAttribute("idCandidat");
                if (Integer.parseInt(id) == idUtilisateur) {
                    c = new Candidat();
                    c.setIdUtilisateur(Integer.parseInt(id));
                    c.setIdCandidat(Integer.parseInt(idCandidat));
                }
            }
        }
        return c;
    }

    public List<Candidat> getListeCandidats() throws IOException {
        ClientResource resource = new ClientResource(BASE_URL);
        Representation reponse = resource.get();
        DomRepresentation newDom = new DomRepresentation(reponse);
        Document newDoc = newDom.getDocument();
        List<Candidat> listeCandidats = new ArrayList<Candidat>();
        //On crée une List contenant tous les noeuds "utilisateurs" de l'Element racine
        NodeList listeUtilisateurs = newDoc.getChildNodes();
        //On crée un Iterator sur notre liste
        for (int i = 0; i < listeUtilisateurs.getLength(); i++) {
            NodeList utilisateur = newDoc.getElementsByTagName("candidat");
            for (int j = 0; j < utilisateur.getLength(); j++) {
                Element elt = (Element) utilisateur.item(j);
                String id = elt.getAttribute("idUtilisateur");
                String idCandidat = elt.getAttribute("idCandidat");
                Candidat c = new Candidat();
                c.setIdUtilisateur(Integer.parseInt(id));
                c.setIdCandidat(Integer.parseInt(idCandidat));
                listeCandidats.add(c);

            }
        }
        return listeCandidats;
    }
}
